/*
  学习目标：Redux的基本使用-dispatch修改count + 1 和减1
*/

// 2. 在reducer函数中，计算新的状态
import { createStore } from "redux";

// 💥fucntion 是reducer函数，reducer函数负责计算状态

const store = createStore(function (
  state = { count: 0, msg: "React" },
  action
) {
  console.log("action  ----->  ", action);

  // 💥第二个参数，是接收得到的action，
  // action中带有type

  if (action.type === "add") {
    // 💥 reducer中，计算新值一定是：返回新值覆盖旧值
    // 数据不可变
    return {
      ...state,
      // this.setState({count: this.state.count +1})
      count: state.count + 1,
    };
  }

  if (action.type === "des") {
    return {
      ...state,
      count: state.count - 1,
    };
  }
  return state;
});

console.log("store.getState().count  ----->  ", store.getState().count);

// 1. 使用diapatch发起action
// 💥 Redex中修改数据，只能通过dispatch发起一个action，去修改
// 💥 Action是一个普通的js对象, 一定要有type这个属性
store.dispatch({ type: "add" });

console.log("store.getState().count  ----->  ", store.getState().count);

store.dispatch({ type: "des" });

console.log("store.getState().count  ----->  ", store.getState().count);

// 1. dispatch修改
// 💥 dispatch({type: 'xxx'})

// 2. 在reducer函数中修改state
// 💥 reducer中，计算新值一定是：返回新值覆盖旧值
